package servicos;

import javax.json.Json;
import javax.json.JsonObject;

import resposta.CabecalhoResposta;
import resposta.Resposta;
import sessao.Sessao;
import util.Servico;
import beans.Cookie;

public class WSSair implements Servico {
	private Sessao sessao =  Sessao.getSessao();
	
	public WSSair(){
		
	}
	
	@Override
	public void executa(Resposta resposta) {
		
		String token  = resposta.getRequisicao().getMetodo().getJson().getString("token");
		
		if(token != null){			
			Cookie cookie = new Cookie(token,token);			
			if(sessao.validarToken(cookie)){
										
				if(sessao.destruirSessao(cookie)){	
					
					JsonObject rslt = Json.createObjectBuilder()					
							.add("retorno", true)
							.add("mensagem", "true")
							.build();
								
					CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(rslt.toString().length(), "application/json");
					
					resposta.setCabecalhoResposta(cabecalhoResposta);
					resposta.despacharCabecalho();
					resposta.despacharRecurso(rslt);	
				}else{
					JsonObject rslt = Json.createObjectBuilder()					
							.add("retorno", false)
							.add("mensagem", "true")
							.build();
								
					CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(rslt.toString().length(), "application/json");
					
					resposta.setCabecalhoResposta(cabecalhoResposta);
					resposta.despacharCabecalho();
					resposta.despacharRecurso(rslt);	
				}
			}else{
				negarAcesso(resposta, "true");
			}
		}else{
			negarAcesso(resposta, "true");
		}
		
		
	}
	private void negarAcesso(Resposta resposta, String msg){
		JsonObject rslt = Json.createObjectBuilder()					
				.add("retorno", false)
				.add("mensagem", msg)
				.build();
					
		CabecalhoResposta cabecalhoResposta = new CabecalhoResposta(rslt.toString().length(), "application/json");
		
		resposta.setCabecalhoResposta(cabecalhoResposta);
		resposta.despacharCabecalho();
		resposta.despacharRecurso(rslt);	
	}
}
